package leetcode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class sanshuzhihe {
    public static List<List<Integer>> threeSum(int[] nums) {
        if(nums==null||nums.length<3){
            return null;
        }
        List<List<Integer>> list=new ArrayList<>();
        HashSet<String> set=new HashSet<>();
        Arrays.sort(nums);
        for(int i=0;i<nums.length-2;i++){
            int a=nums[i];
            int left=i+1;
            int right=nums.length-1;
            while(left<right) {
                if (nums[left] + nums[right] < -a) {
                    left++;
                } else if (nums[left] + nums[right] > -a) {
                    right--;
                } else {
                    // 创建当前三元组的唯一标识字符串
                    String tripletKey = a + "," + nums[left] + "," + nums[right];
                    // 如果这个三元组还没出现过
                    if (!set.contains(tripletKey)) {
                        set.add(tripletKey);
                        // 创建新的列表存储这个三元组
                        List<Integer> triplet = new ArrayList<>();
                        triplet.add(a);
                        triplet.add(nums[left]);
                        triplet.add(nums[right]);
                        list.add(triplet);
                    }
                    right--;
                    left++;
                }
            }
        }
        return list;
    }
    public static void main(String[] args) {
        int[] arrays={-2,0,1,1,2};
        List<List<Integer>> list = threeSum(arrays);
        System.out.println(list);

    }
}
